September 04, 2022
Unknown
Position of 3D points
and each camera’s relative pose
( DoF)Given
Constraints
Solution ⇒ Non-linear least-square optimization
Cost Function
Reprojection error
Optimization
OpenCV
Bundle adjustment
(Graph) Optimization
SfM (Global)
Build a viewing graph (well-matched pairs) while finding inliers
⇒ Load images and extract features
⇒ Match features and find good matches (which has enough inliers)
Optimize camera pose and 3D points together (BA)
SfM (Incremental)
Select the next image to add
⇒ Separate points into known and unknown for PnP (known) and triangulation (unknown)
Feature-based Method
vs Direct Method
Visual Odometry
vs Wheel Odometry
Visual Odometry | Wheel Odometry |
---|---|
+ direct motion measure | + simple calculation |
+ six degree-of-freedoms | |
+ easy to install | |
− heavy computation | − indirect motion measure (e.g. slippage) |
− visual disturbance (e.g. moving objects) | − two degree-of-freedoms |
− necessary to be on rotor/shaft |
Visual Odometry
vs Visual SLAM
Visual Odometry
no assumption on trajectories
⇒ navigation / large space (outdoor)
Visual SLAM
closed-loop is preferred for convergence
⇒ mapping / small space (indoor, campus)
Feature-based Monocular Visual Odometry
Two-view Motion Estimation
Find 2D-2D feature correspondence
Feature
→ Good-Feature-to-Track [Shi94_CVPR] with bucketing to distribute features
Correspondence
→ Lucas-Kanade optical flow [Lucas81_IJCAI]
Reject outlier correspondence
Error measure
→ Sampson distance
Estimate (scaled) relative pose
PnP Pose Estimation
Find 2D-2D feature correspondence
Feature
→ Good-Feature-to-Track [Shi94_CVPR] with bucketing to distribute features
Correspondence
→ Lucas-Kanade optical flow [Lucas81_IJCAI]
Find 2D-3D point correspondence & Reject outlier correspondence
Error measure
→ Projection error
Estimate pose
Updat 3D points map